package com.ly.lytestbootkotlin.domain

class Result {
    /**
     * 获取
     * @return success
     */
    /**
     * 设置
     * @param success
     */
    /** 操作是否成功的标识  */
    var success: Boolean? = null
    /**
     * 获取
     * @return errorMsg
     */
    /**
     * 设置
     * @param errorMsg
     */
    /** 如果操作失败，存储相关的错误信息  */
    var errorMsg: String? = null
    /**
     * 获取
     * @return data
     */
    /**
     * 设置
     * @param data
     */
    /** 存储返回数据，类型为泛型Object,可以根据实际情况进行类型转换 */
    var data: Any? = null
    /**
     * 获取
     * @return total
     */
    /**
     * 设置
     * @param total
     */
    /** 存储返回数据的总数，通常用于分页查询  */
    var total: Long? = null

    constructor()

    constructor(success: Boolean?, errorMsg: String?, data: Any?, total: Long?) {
        this.success = success
        this.errorMsg = errorMsg
        this.data = data
        this.total = total
    }

    override fun toString(): String {
        return "Result{success = $success, errorMsg = $errorMsg, data = $data, total = $total}"
    }

    companion object {
        /** 1.请求成功 --- 无返回数据  */
        fun ok(): Result {
            return Result(true, null, null, null)
        }

        /** 2.请求成功 --- 有返回数据  */
        fun ok(data: Any?): Result {
            return Result(true, null, data, null)
        }

        /** 3.请求成功 --- 分页数据  */
        fun ok(data: List<*>?, total: Long?): Result {
            return Result(true, null, data, total)
        }

        /** 4.请求失败 --- 失败信息  */
        fun fail(errorMsg: String?): Result {
            return Result(false, errorMsg, null, null)
        }
    }
}